/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gpstracking.DA;

import com.gpstracking.BE.Area;
import com.gpstracking.BE.Ruta;
import com.gpstracking.BE.Punto;
import com.gpstracking.BE.Evento;
import com.gpstracking.BE.Usuario;
import com.gpstracking.Utils.Geometry.Point;
import com.gpstracking.Utils.Geometry.Polygon;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author jmj
 */
public class RutaDA {

    public static Polygon getPoly(Ruta Ruta) {
        
        List<Point> tmp = new ArrayList<Point>( Ruta.getPuntos() );
        return new Polygon(tmp);
    }

    public static boolean save(Ruta ruta, List<Punto> Puntos) {
    	
    	Session hbsession = null;
        try{
        	hbsession = HUtil.getSession();
        	
        	
        	
            Transaction tx = hbsession.beginTransaction();
            tx.begin();
            
            int idRuta = ruta.getIdRuta();
            if ( idRuta == 0 ){
            	hbsession.save(ruta);	
            }
            
        	
            
            for( Punto it : Puntos ){
                hbsession.save( it ) ;
            }
            
            if ( idRuta != 0 ){
            	hbsession.update( ruta );
            	
            }
            
            
            
            tx.commit();
            
            return true;
        }catch(Exception ex){
            ex.printStackTrace();
            
            return false;
        }
    }
    public static Ruta get(int idRuta, Usuario usuario) {
        Session hbsession = HUtil.getSession();
        Transaction tx = hbsession.beginTransaction();
		tx.begin();
        Query query = hbsession.createQuery("FROM Ruta WHERE idRuta = :idruta AND usuario.idUsuario = :iduser ");
        query.setParameter("idruta", idRuta);
        query.setParameter("iduser", usuario.getIdUsuario());
        List<Ruta> res = (List<Ruta>) query.list();
        
        return res.isEmpty() ? null : res.get(0);
    }

	public static List<Ruta> getActivas( Usuario usuario ) {
        Session hbsession = HUtil.getSession();
        Transaction tx = hbsession.beginTransaction();
		tx.begin();
        Query query = hbsession.createQuery("FROM Ruta WHERE usuario.idUsuario = :iduser ");
        query.setParameter("iduser", usuario.getIdUsuario());
        List<Ruta> res = (List<Ruta>) query.list();
       
        return res;
	}
    
}
